JDB (Java Debugger) হল Java অ্যাপ্লিকেশন ডিবাগ করার জন্য একটি টুল। এটি Java প্রোগ্রামগুলির ত্রুটি শনাক্ত এবং সমাধান করতে ব্যবহৃত হয়। JDB একটি কমান্ড-লাইন ভিত্তিক ডিবাগিং টুল, যা Java Development Kit (JDK) এর অংশ হিসেবে আসে। এটি Java প্রোগ্রামের ভিতরে চলমান কোডের সমস্যাগুলি সনাক্ত করতে সহায়তা করে।
এই গাইডে আমরা দেখব JDB চালানোর জন্য প্রয়োজনীয় কমান্ডগুলি এবং JDB দিয়ে কীভাবে ডিবাগিং করা যায়।
1. JDB টুল চালানোর জন্য প্রাথমিক কমান্ড
1.1. JDB চালানোর জন্য Java প্রোগ্রাম কম্পাইল এবং রান করা
JDB ব্যবহার করার জন্য প্রথমে Java কোড কম্পাইল করতে হবে এবং তারপর ডিবাগ মোডে রান করতে হবে।
1.1.1. Java কোড কম্পাইল করা
Java কোড কম্পাইল করতে javac কমান্ড ব্যবহার করা হয়। উদাহরণস্বরূপ:
javac MyClass.java
1.1.2. JDB দিয়ে ডিবাগ মোডে Java প্রোগ্রাম রান করা
Java প্রোগ্রামকে JDB দিয়ে ডিবাগ করতে, আপনি java কমান্ডে -agentlib:jdwp অপশন ব্যবহার করবেন। এটি Java Debug Wire Protocol (JDWP) সক্রিয় করে, যাতে আপনি JDB এর মাধ্যমে কোড ডিবাগ করতে পারেন।
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 MyClass
- transport=dt_socket: সোকেট ব্যবহার করে সংযোগ স্থাপন।
- server=y: এটি JDB কে ডিবাগ সার্ভার হিসেবে সেট করে।
- suspend=n: এটি প্রোগ্রামটি প্রথমে থামানোর পরিবর্তে চালু হতে দেয়।
- address=5005: এটি ডিবাগিং পোর্ট নির্ধারণ করে (এটি ডিফল্ট 5005 পোর্টে চলে)।
এখন আপনি JDB টুল দিয়ে ডিবাগিং শুরু করতে পারবেন।
2. JDB কমান্ডের বেসিক ব্যবহার
JDB চালানোর পর আপনি বিভিন্ন কমান্ড ব্যবহার করে ডিবাগিং করতে পারবেন। নিচে কিছু গুরুত্বপূর্ণ JDB কমান্ডের উদাহরণ দেওয়া হলো।
2.1. run কমান্ড
প্রোগ্রামটি শুরু করার জন্য run কমান্ড ব্যবহার করা হয়। এটি ডিবাগ মোডে Java প্রোগ্রাম চালু করে।
run
2.2. stop in কমান্ড
যেকোনো ক্লাস বা মেথডের মধ্যে ব্রেকপয়েন্ট স্থাপন করতে stop in কমান্ড ব্যবহার করা হয়।
stop in MyClass.main
এটি MyClass ক্লাসের main মেথডে ব্রেকপয়েন্ট স্থাপন করবে।
2.3. list কমান্ড
বর্তমান কোড লাইনের চারপাশের কোড দেখানোর জন্য list কমান্ড ব্যবহার করা হয়।
list
এটি ডিবাগারকে বর্তমান ব্রেকপয়েন্টের চারপাশের কোডের অংশ দেখাবে।
2.4. next কমান্ড
প্রোগ্রামটি এক লাইনে এগিয়ে নিয়ে যাওয়ার জন্য next কমান্ড ব্যবহার করা হয়।
next
এটি প্রোগ্রামটিকে পরবর্তী লাইনে নিয়ে যাবে এবং ব্রেকপয়েন্টে পৌঁছানোর আগেই কোড চালিয়ে যাবে।
2.5. step কমান্ড
একটি স্টেটমেন্টের ভিতরে প্রবেশ করতে এবং তার কার্যপ্রণালী দেখতে step কমান্ড ব্যবহার করা হয়।
step
এটি বর্তমান ফাংশনের ভিতরে প্রবেশ করবে এবং পরবর্তী স্টেটমেন্ট দেখাবে।
2.6. print কমান্ড
কোনো ভেরিয়েবলের মান দেখতে print কমান্ড ব্যবহার করা হয়।
print myVariable
এটি myVariable নামের ভেরিয়েবলের বর্তমান মান প্রিন্ট করবে।
2.7. cont কমান্ড
কোডে ব্রেকপয়েন্টে থামানোর পর প্রোগ্রাম চালিয়ে নেওয়ার জন্য cont (continue) কমান্ড ব্যবহার করা হয়।
cont
এটি প্রোগ্রামটি চালিয়ে নিয়ে যাবে এবং পরবর্তী ব্রেকপয়েন্টে থামবে।
2.8. quit কমান্ড
JDB থেকে বের হতে quit কমান্ড ব্যবহার করা হয়।
quit
এটি ডিবাগিং সেশন শেষ করবে এবং JDB থেকে বের হয়ে যাবে।
3. JDB এর উন্নত কমান্ড
3.1. stop at কমান্ড
এটি কোনো নির্দিষ্ট লাইনে ব্রেকপয়েন্ট সেট করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ:
stop at MyClass:25
এটি MyClass ক্লাসের 25 নম্বর লাইনে ব্রেকপয়েন্ট স্থাপন করবে।
3.2. watch কমান্ড
ভেরিয়েবলের মান পরিবর্তন হলে তা দেখতে watch কমান্ড ব্যবহার করা হয়।
watch myVariable
এটি myVariable এর মান পরিবর্তিত হলে আপনাকে জানিয়ে দেবে।
3.3. locals কমান্ড
লোকাল ভেরিয়েবলগুলির মান দেখতে locals কমান্ড ব্যবহার করা হয়।
locals
এটি বর্তমান ফাংশনের সব লোকাল ভেরিয়েবলের মান দেখাবে।
3.4. threads কমান্ড
বর্তমানে চলমান সব থ্রেডের তথ্য দেখতে threads কমান্ড ব্যবহার করা হয়।
threads
এটি প্রোগ্রামে চলমান সব থ্রেডের তালিকা দেখাবে।
4. JDB সেশন ডিবাগিং উদাহরণ
এখন একটি বাস্তব উদাহরণ দেওয়া হলো যেখানে আমরা একটি সিম্পল Java প্রোগ্রাম ডিবাগ করব:
Java কোড (MyClass.java):
public class MyClass {
public static void main(String[] args) {
int a = 5;
int b = 0;
int c = a / b; // এটাই আমাদের ত্রুটি (Division by zero)
System.out.println("Result: " + c);
}
}
JDB দিয়ে ডিবাগ:
- Java প্রোগ্রাম কম্পাইল করুন:
javac MyClass.java
- JDB দিয়ে ডিবাগ মোডে চালান:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 MyClass
- JDB কমান্ড ব্যবহার করুন:
- প্রথমে
stop in MyClass.mainদিয়ে main মেথডে ব্রেকপয়েন্ট সেট করুন। - এরপর
runকমান্ড দিয়ে প্রোগ্রাম চালু করুন। - JDB ত্রুটির জায়গায় থেমে যাবে, এবং আপনি print, next, step কমান্ড দিয়ে ডিবাগিং করতে পারবেন।
- প্রথমে
সারাংশ
JDB একটি শক্তিশালী টুল যা Java অ্যাপ্লিকেশন ডিবাগ করার জন্য ব্যবহৃত হয়। JDB ব্যবহার করে আপনি আপনার Java প্রোগ্রামের কোডে ব্রেকপয়েন্ট সেট করতে পারেন, স্টেটমেন্টের মধ্যে প্রবেশ করতে পারেন, এবং ভেরিয়েবলগুলির মান পরীক্ষা করতে পারেন। JDB-এর মাধ্যমে ডিবাগিংয়ের সময় কমান্ড-লাইন ভিত্তিক নির্দেশনাগুলি ব্যবহার করতে হয়, যেমন stop, list, next, step, print, এবং quit কমান্ড। JDB এর সাহায্যে আপনি কোডের ভুল খুঁজে বের করতে এবং ত্রুটি সমাধান করতে সক্ষম হবেন।
Read more